Spring ORM এ Entity Mapping

Java Technologies - স্প্রিং ওআরএম (Spring ORM)
109
109

Entity Mapping হল জাভা ক্লাস এবং ডাটাবেস টেবিলের মধ্যে সম্পর্ক স্থাপন করার একটি প্রক্রিয়া। Spring ORM Hibernate বা JPA ব্যবহার করে Entity Mapping সহজতর করে।

Hibernate বা JPA annotations ব্যবহার করে এই ম্যাপিং করা হয়। Entity Mapping মূলত টেবিলের কাঠামো এবং জাভা ক্লাসের মধ্যে সম্পর্ক নির্ধারণ করে।


Entity Mapping-এর জন্য গুরুত্বপূর্ণ অ্যানোটেশন

@Entity

@Entity একটি জাভা ক্লাসকে Hibernate বা JPA-এর Entity হিসাবে চিহ্নিত করে। এটি সেই ক্লাসকে নির্দেশ করে, যেটি ডাটাবেস টেবিলের সাথে ম্যাপ করা হবে।

@Table

@Table অ্যানোটেশনটি ডাটাবেস টেবিলের নাম নির্ধারণ করতে ব্যবহৃত হয়। যদি এটি ব্যবহার না করা হয়, তবে ডিফল্টভাবে ক্লাসের নাম টেবিলের নাম হিসাবে নেওয়া হয়।

@Id

@Id অ্যানোটেশনটি Primary Key নির্ধারণের জন্য ব্যবহৃত হয়।

@GeneratedValue

@GeneratedValue অ্যানোটেশনটি Primary Key-এর মান অটোমেটিক জেনারেট করতে ব্যবহৃত হয়।

@Column

@Column ডাটাবেস টেবিলের একটি নির্দিষ্ট কলামের সাথে একটি ফিল্ড ম্যাপ করে। এটি কলামের নাম, দৈর্ঘ্য, এবং অন্যান্য বৈশিষ্ট্য নির্ধারণ করতে ব্যবহৃত হয়।


Entity Mapping-এর উদাহরণ

নিচে একটি উদাহরণ দেওয়া হলো, যেখানে একটি User ক্লাস ডাটাবেস টেবিলের সাথে ম্যাপ করা হয়েছে:

import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Column;

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "first_name", nullable = false, length = 50)
    private String firstName;

    @Column(name = "last_name", nullable = false, length = 50)
    private String lastName;

    @Column(name = "email", unique = true, nullable = false)
    private String email;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Entity Relationships Mapping

@OneToOne

এক টেবিলের একটি রেকর্ড অন্য টেবিলের একটি রেকর্ডের সাথে সম্পর্কিত হলে @OneToOne ব্যবহার করা হয়।

@OneToOne
@JoinColumn(name = "profile_id")
private Profile profile;

@OneToMany

এক টেবিলের একটি রেকর্ড অনেক রেকর্ডের সাথে সম্পর্কিত হলে @OneToMany ব্যবহার করা হয়।

@OneToMany(mappedBy = "user")
private List<Order> orders;

@ManyToOne

অনেক টেবিলের রেকর্ড একটি টেবিলের একটি রেকর্ডের সাথে সম্পর্কিত হলে @ManyToOne ব্যবহার করা হয়।

@ManyToOne
@JoinColumn(name = "role_id")
private Role role;

@ManyToMany

অনেক রেকর্ড একাধিক রেকর্ডের সাথে সম্পর্কিত হলে @ManyToMany ব্যবহার করা হয়।

@ManyToMany
@JoinTable(
    name = "user_roles",
    joinColumns = @JoinColumn(name = "user_id"),
    inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set<Role> roles;

Entity Mapping-এর কাজের ধাপ

১. Entity ক্লাস তৈরি করা

Entity ক্লাস তৈরি করে উপযুক্ত অ্যানোটেশন দিয়ে প্রতিটি ফিল্ডকে ডাটাবেস টেবিলের কলামের সাথে ম্যাপ করতে হবে।

২. ডাটাবেস টেবিল কনফিগারেশন নিশ্চিত করা

Hibernate বা JPA-কে টেবিল তৈরি করার অনুমতি দেওয়া বা বিদ্যমান টেবিল ব্যবহারের জন্য প্রয়োজনীয় সেটিং নিশ্চিত করতে হবে।


উপসংহার

Spring ORM Entity Mapping ব্যবহার করে ডাটাবেস টেবিল এবং জাভা ক্লাসের মধ্যে সম্পর্ক নির্ধারণ করা যায়। এর ফলে অ্যাপ্লিকেশনের ডাটাবেস অপারেশন সহজতর হয় এবং কোড সংরক্ষণশীল ও সুনির্দিষ্ট থাকে।

Content added By

Entity Mapping এর মৌলিক ধারণা

87
87

Entity Mapping হল Spring ORM (বা অন্য ORM) ব্যবহার করে ডাটাবেসের টেবিল এবং জাভা ক্লাসের মধ্যে একটি সংযোগ স্থাপন করার পদ্ধতি। ORM (Object-Relational Mapping) টুল যেমন Hibernate বা JPA এর মাধ্যমে টেবিলের রো-কলাম এবং জাভা অবজেক্টের প্রোপার্টির মধ্যে ম্যাপিং তৈরি করা হয়। এর ফলে ডেভেলপাররা SQL লিখে ডাটাবেস অ্যাক্সেস না করেই জাভা অবজেক্ট ব্যবহার করে ডাটাবেস অপারেশন সম্পন্ন করতে পারে।

Spring ORM ব্যবহার করলে Entity Mapping সহজ ও সুসংহত হয়।


Entity Mapping এর মূল উপাদান

@Entity অ্যানোটেশন

@Entity অ্যানোটেশন ব্যবহার করে একটি জাভা ক্লাসকে ডাটাবেস টেবিল হিসেবে ঘোষণা করা হয়।

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class User {
    @Id
    private int id;
    private String name;
    private String email;

    // Getter এবং Setter মেথড
}

@Table অ্যানোটেশন

@Table অ্যানোটেশন ব্যবহার করে টেবিলের নাম কাস্টমাইজ করা যায়।

import jakarta.persistence.Entity;
import jakarta.persistence.Table;

@Entity
@Table(name = "users")
public class User {
    // ফিল্ড ডেফিনেশন
}

@Id এবং @GeneratedValue

@Id ফিল্ডটি টেবিলের প্রাইমারি কী নির্দেশ করে।
@GeneratedValue দিয়ে প্রাইমারি কী-এর জেনারেশন স্ট্র্যাটেজি নির্ধারণ করা যায়।

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private String name;

    // Getter এবং Setter মেথড
}

@Column অ্যানোটেশন

@Column দিয়ে একটি ফিল্ডের ডাটাবেস কলামের নাম এবং বৈশিষ্ট্য নির্ধারণ করা যায়।

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class User {
    @Id
    private int id;

    @Column(name = "user_name", nullable = false)
    private String name;

    private String email;
}

Entity Mapping এর গুরুত্বপূর্ণ বৈশিষ্ট্য

  • Java Class এবং Table Mapping: জাভা ক্লাস @Entity অ্যানোটেশনের মাধ্যমে একটি টেবিলের প্রতিনিধিত্ব করে।
  • Field এবং Column Mapping: প্রতিটি ক্লাস ফিল্ড @Column বা ডিফল্টভাবে কলামের সঙ্গে ম্যাপ হয়।
  • Primary Key Definition: প্রাইমারি কী @Id অ্যানোটেশনের মাধ্যমে নির্ধারণ হয়।
  • Relationship Mapping: একাধিক টেবিলের মধ্যে সম্পর্ক নির্ধারণ করতে @OneToOne, @OneToMany, এবং @ManyToMany ব্যবহার করা হয়।

উদাহরণ: একটি Entity ক্লাস

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Column;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "product_name", nullable = false)
    private String name;

    private double price;

    // Getter এবং Setter
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

Entity Mapping এর সুবিধা

  • SQL লেখার প্রয়োজনীয়তা কমায়।
  • Object-Oriented Programming (OOP) এর ধারণার সঙ্গে সামঞ্জস্যপূর্ণ।
  • ডাটাবেস এবং অ্যাপ্লিকেশন স্তরের মধ্যে লজিক্যাল সম্পর্ক তৈরি করে।
  • ডাটাবেস মডেলের পরিবর্তন সহজ করে।

Entity Mapping এর মাধ্যমে জাভা অ্যাপ্লিকেশনে ডাটাবেস ম্যানিপুলেশন আরও কার্যকর হয়। Spring ORM ব্যবহার করলে Entity Mapping সহজে এবং দ্রুত বাস্তবায়ন করা যায়।


Content added By

@Table, @Column এর মাধ্যমে Table Mapping

52
52

Spring ORM-এ @Table এবং @Column অ্যানোটেশন ব্যবহার করে ডাটাবেস টেবিলের সঙ্গে জাভা ক্লাসের ম্যাপিং করা হয়। এগুলো JPA (Java Persistence API) থেকে আসে এবং Hibernate বা JPA প্রোভাইডার ব্যবহারে খুবই কার্যকরী।

@Table এবং @Column কী?

  • @Table: একটি জাভা ক্লাসকে ডাটাবেস টেবিলের সঙ্গে সংযুক্ত (Map) করতে ব্যবহৃত হয়। এটি টেবিলের নাম ও অন্যান্য বৈশিষ্ট্য নির্ধারণ করে।
  • @Column: ডাটাবেস টেবিলের নির্দিষ্ট একটি কলামের সঙ্গে জাভা ক্লাসের একটি ফিল্ড সংযুক্ত করতে ব্যবহৃত হয়।

Table Mapping: @Table এবং @Column এর ব্যবহার

উদাহরণ: টেবিল ম্যাপিং কনফিগারেশন

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Column;

@Entity
@Table(name = "employees")
public class Employee {

    @Id
    @Column(name = "employee_id", nullable = false)
    private Long id;

    @Column(name = "employee_name", length = 100, nullable = false)
    private String name;

    @Column(name = "department")
    private String department;

    @Column(name = "salary", columnDefinition = "DECIMAL(10, 2)")
    private Double salary;

    // Getters and Setters
}

@Table এবং @Column এর ব্যবহার ব্যাখ্যা

@Table এর বৈশিষ্ট্য

  • name: ডাটাবেস টেবিলের নাম নির্ধারণ করে।
  • schema: স্কিমা স্পেসিফাই করতে ব্যবহৃত হয় (যদি প্রয়োজন হয়)।
  • catalog: ডাটাবেস ক্যাটালগ নির্ধারণ করতে ব্যবহৃত হয়।

উদাহরণ:

@Table(name = "employees", schema = "hr")

@Column এর বৈশিষ্ট্য

  • name: ডাটাবেস কলামের নাম নির্ধারণ করে।
  • length: স্ট্রিং টাইপের কলামের দৈর্ঘ্য নির্ধারণ করে।
  • nullable: কলামে NULL অনুমতি দেওয়া হবে কি না।
  • unique: কলামটিকে ইউনিক কনস্ট্রেইন্ট দেয়।
  • columnDefinition: কলামের ডাটাটাইপ নির্ধারণ করে।

উদাহরণ:

@Column(name = "employee_name", length = 100, nullable = false, unique = true)

কাজের প্রবাহ

টেবিল এবং কলাম ম্যাপিং এর ধাপসমূহ

  1. Entity ডিফাইন করা: @Entity ব্যবহার করে ক্লাসকে Entity হিসেবে চিহ্নিত করা।
  2. টেবিল ম্যাপিং: @Table ব্যবহার করে ডাটাবেস টেবিলের নাম কনফিগার করা।
  3. কলাম ম্যাপিং: @Column ব্যবহার করে প্রতিটি ফিল্ডকে কলামের সঙ্গে সংযুক্ত করা।
  4. Hibernate বা JPA Repository তৈরি করা: ডেটাবেস অপারেশন সহজ করার জন্য Spring Data JPA ব্যবহার করা।

উদাহরণ: Spring Boot এ @Table এবং @Column সহ একটি পূর্ণাঙ্গ Entity

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Column;

@Entity
@Table(name = "products")
public class Product {

    @Id
    @Column(name = "product_id")
    private Long id;

    @Column(name = "product_name", nullable = false, length = 255)
    private String name;

    @Column(name = "price", columnDefinition = "DECIMAL(10, 2)")
    private Double price;

    @Column(name = "description", length = 500)
    private String description;

    // Getters and Setters
}

Repository এবং Service লেয়ার

Repository তৈরি

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

Service লেয়ার

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    public Product saveProduct(Product product) {
        return productRepository.save(product);
    }
}

@Table এবং @Column এর মাধ্যমে টেবিল এবং কলাম ম্যাপিং অত্যন্ত সহজ হয়, যা ডাটাবেসের সঙ্গে জাভা ক্লাসের সঠিক সংযোগ নিশ্চিত করে।

Content added By

One-to-One, One-to-Many, এবং Many-to-Many Relationship Mapping

117
117

স্প্রিং ওআরএম ব্যবহার করে Java Persistence API (JPA) এবং Hibernate এর মাধ্যমে ডাটাবেসে সম্পর্ক (Relationships) মডেল করা সম্ভব। এখানে One-to-One, One-to-Many, এবং Many-to-Many সম্পর্ক ব্যাখ্যা করা হলো।


One-to-One Relationship

একটি টেবিলের একটি রেকর্ড আরেকটি টেবিলের মাত্র একটি রেকর্ডের সাথে সম্পর্কিত হলে এটি One-to-One সম্পর্ক।

উদাহরণ

প্রতিটি ব্যবহারকারীর (User) একটি অ্যাড্রেস (Address) থাকতে পারে।

Entity ক্লাস

import jakarta.persistence.*;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "address_id", referencedColumnName = "id")
    private Address address;

    // Getters and Setters
}

@Entity
public class Address {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String street;
    private String city;

    // Getters and Setters
}

Key Points:

  • @OneToOne: সম্পর্ক নির্দেশ করে।
  • @JoinColumn: address_id কলাম দিয়ে দুটি টেবিল লিঙ্ক করে।

One-to-Many Relationship

একটি টেবিলের একটি রেকর্ড আরেকটি টেবিলের একাধিক রেকর্ডের সাথে সম্পর্কিত হলে এটি One-to-Many সম্পর্ক।

উদাহরণ

একটি ক্যাটেগরির (Category) একাধিক প্রোডাক্ট (Product) থাকতে পারে।

Entity ক্লাস

import jakarta.persistence.*;
import java.util.List;

@Entity
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToMany(mappedBy = "category", cascade = CascadeType.ALL)
    private List<Product> products;

    // Getters and Setters
}

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @ManyToOne
    @JoinColumn(name = "category_id")
    private Category category;

    // Getters and Setters
}

Key Points:

  • @OneToMany: একাধিক সম্পর্ক নির্দেশ করে।
  • @ManyToOne: বিপরীত সম্পর্ক নির্দেশ করে।
  • mappedBy: মূল সম্পর্কের ফিল্ডের নাম দেখায়।

Many-to-Many Relationship

দুটি টেবিলের একাধিক রেকর্ড একে অপরের সাথে সম্পর্কিত হলে এটি Many-to-Many সম্পর্ক।

উদাহরণ

একটি শিক্ষার্থী (Student) একাধিক কোর্স (Course) নিতে পারে এবং একটি কোর্সে একাধিক শিক্ষার্থী থাকতে পারে।

Entity ক্লাস

import jakarta.persistence.*;
import java.util.List;

@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @ManyToMany
    @JoinTable(
        name = "student_course",
        joinColumns = @JoinColumn(name = "student_id"),
        inverseJoinColumns = @JoinColumn(name = "course_id")
    )
    private List<Course> courses;

    // Getters and Setters
}

@Entity
public class Course {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String title;

    @ManyToMany(mappedBy = "courses")
    private List<Student> students;

    // Getters and Setters
}

Key Points:

  • @ManyToMany: সম্পর্ক নির্দেশ করে।
  • @JoinTable: মধ্যবর্তী টেবিলের নাম এবং কলাম নির্ধারণ করে।
  • inverseJoinColumns: বিপরীত দিকের টেবিলের কলাম নির্ধারণ করে।

সারাংশ

  • One-to-One: দুই টেবিলের একটি রেকর্ড একটি রেকর্ডের সাথে সম্পর্কিত।
  • One-to-Many: একটি রেকর্ড একাধিক রেকর্ডের সাথে সম্পর্কিত।
  • Many-to-Many: দুই টেবিলের একাধিক রেকর্ড একে অপরের সাথে সম্পর্কিত।

এই সম্পর্কগুলো স্প্রিং ওআরএম এবং Hibernate এর মাধ্যমে ডেটাবেস মডেলিং সহজ করে।

Content added By

উদাহরণ সহ Entity Mapping

70
70

Entity Mapping হলো ORM (Object Relational Mapping) এর একটি গুরুত্বপূর্ণ দিক, যা ডাটাবেজ টেবিল এবং Java ক্লাসের মধ্যে সম্পর্ক নির্ধারণ করে। Spring ORM এর মাধ্যমে Hibernate ব্যবহার করে সহজেই Entity Mapping করা যায়।


Entity Mapping প্রকারভেদ

১. Single Table Mapping

একটি Java ক্লাস সরাসরি একটি টেবিলের সঙ্গে যুক্ত থাকে।

২. Relationship Mapping

  • One-to-One: একটি Entity অন্য একটি Entity এর সাথে ১:১ সম্পর্ক তৈরি করে।
  • One-to-Many: একটি Entity অন্য Entity এর সাথে ১ থেকে অনেক সম্পর্ক তৈরি করে।
  • Many-to-Many: দুই Entity এর মধ্যে অনেক থেকে অনেক সম্পর্ক তৈরি করে।

উদাহরণ সহ Entity Mapping

এখানে আমরা একাধিক ধরণের Entity Mapping এর উদাহরণ দেখাবো।


Single Table Mapping

একটি Java ক্লাসের সাথে একটি ডাটাবেজ টেবিলকে ম্যাপ করা হবে।

Employee.java

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class Employee {
    @Id
    private int id;
    private String name;
    private String department;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}

Hibernate এই Entity কে ডাটাবেজের একটি টেবিলের সাথে যুক্ত করে এবং ডাটাবেসে Employee টেবিল তৈরি করে।


One-to-One Mapping

একটি Entity অন্য একটি Entity এর সাথে ১:১ সম্পর্ক তৈরি করবে।

Employee.java

import jakarta.persistence.*;

@Entity
public class Employee {
    @Id
    private int id;
    private String name;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "address_id")
    private Address address;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}

Address.java

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class Address {
    @Id
    private int id;
    private String city;
    private String country;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }
}

One-to-Many Mapping

একটি Entity একাধিক Entity এর সাথে সম্পর্ক তৈরি করবে।

Department.java

import jakarta.persistence.*;
import java.util.List;

@Entity
public class Department {
    @Id
    private int id;
    private String name;

    @OneToMany(mappedBy = "department", cascade = CascadeType.ALL)
    private List<Employee> employees;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }
}

Employee.java

import jakarta.persistence.*;

@Entity
public class Employee {
    @Id
    private int id;
    private String name;

    @ManyToOne
    @JoinColumn(name = "department_id")
    private Department department;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }
}

Many-to-Many Mapping

দুই Entity একে অপরের সাথে অনেক থেকে অনেক সম্পর্ক তৈরি করবে।

Student.java

import jakarta.persistence.*;
import java.util.List;

@Entity
public class Student {
    @Id
    private int id;
    private String name;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(
        name = "student_course",
        joinColumns = @JoinColumn(name = "student_id"),
        inverseJoinColumns = @JoinColumn(name = "course_id")
    )
    private List<Course> courses;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Course> getCourses() {
        return courses;
    }

    public void setCourses(List<Course> courses) {
        this.courses = courses;
    }
}

Course.java

import jakarta.persistence.*;
import java.util.List;

@Entity
public class Course {
    @Id
    private int id;
    private String title;

    @ManyToMany(mappedBy = "courses")
    private List<Student> students;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public List<Student> getStudents() {
        return students;
    }

    public void setStudents(List<Student> students) {
        this.students = students;
    }
}

এসব Entity Mapping Hibernate এবং Spring ORM ব্যবহার করে Java প্রজেক্টে কার্যকরভাবে ডাটাবেস সম্পর্ক তৈরি করতে ব্যবহৃত হয়।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion